package annotation05;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 *     //元注解(可写可不写)
 *       public @interface 注解名称{
 *    	     //注解属性
 * 	     数据类型 属性名称();
 * 	     数据类型 属性名称() default 默认值;//代表当前属性的默认值
 *       }
 *       注解中属性的数据类型:
 *         1.Java中八大基本类型
 *         2.String,Class,enum,注解类型
 *         3.以上所有类型的一维数组
 *   Java中注解在不指名位置的情况下,可以用在包上,类上,方法上,方法的形参上等
 */
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)//由于我们需要通过反射来获取注解,反射其实就是解剖字节码对象,我们需要保证在字节码对象中依然有该注解
                                 //所以需要使用RetentionPolicy.RUNTIME
public @interface MyAnnotation {
	  String name(); //定义一个String类型name属性
	  int num() default 0;//定义一个int类型num属性,并且默认值为0
	  String[] colors() default {"white","black"};//定义一个String[]类型的colors属性,并且默认值为{"white","black"}
}
